using Identity.Application.Contracts.Common;
using Identity.Domain.Aggregates;

namespace Identity.Application.Contracts.Services;

public interface IRoleService
{
    Task<bool> RoleExistsAsync(Guid roleId);
    Task<bool> RoleExistsByNameAsync(string roleName);
    Task<CreateRoleResult> CreateRoleAsync(Guid roleId,string roleCode, string roleName,string? description, bool status);
    Task<Role?> GetRoleByIdAsync(Guid roleId);
    Task<RoleDto?> GetRoleByNameAsync(string roleName);
    Task<IList<RoleDto>> GetAllRolesAsync();
    Task<OperationResult> DeleteRoleAsync(Guid roleId);

    Task<OperationResult> UpdateRoleNameAsync(Guid roleId, string newRoleName);

    Task<RoleDto?> SaveRoleAsync(Role role);
}
